#pragma once
#ifndef ENGINE_H
#define ENGINE_H
#include "Engine_Def.h"
#include <string>
#include "Base.h"
#include "Utils\Logger\Logger.h"
#include <vector>

//Forward Declaration
class CProcess;
class CCore;
class CGraphicsManager;
class CFontManager;
class CLanguageManager;

class CEngine
{
	public:
		CEngine									(void): m_core(0), m_process(0), m_Timer(30), m_bDebugInfo(false){}
		~CEngine								(void);
		void				Init				(HWND hWnd);
		void				LoadXml				(const std::string& pathInitXml);
		void				DeInit				();
		void				Update				();
		void				UpdateInputAction	();
		void				Render				();
		void				SetProcess			(CProcess *l_process);
		SEngineInitParams	GetInitParams		() {return m_SEngineInitParams;}
	
	private:
		void				RenderScene			(CGraphicsManager *l_GraphicsManager);

	private:
		CProcess			*m_process;
		CCore				*m_core;
		HWND				m_hWnd;
		SEngineInitParams	m_SEngineInitParams;
		CTimer				m_Timer;
		bool				m_bDebugInfo;
		CLogger				*m_Logger;
};

#endif